VSCode编译时提示 undefined reference to “XXX” 问题一列 您所在的位置:网站首页 vscode undefined reference to winmain VSCode编译时提示 undefined reference to “XXX” 问题一列

VSCode编译时提示 undefined reference to “XXX” 问题一列

2024-07-10 16:33| 来源: 网络整理| 查看: 265

1、问题现象:

下载cJSON.h/cJSON.c 测试cJSON相关函数,只有cJSON.h、cJSON.c 及配套的test.c 三个文件。 1)在code::blocks 中完全正确运行,能看到正确的结果 2)在vscode中点击右上角的三角编译运行,报如下错误,找不到函数:

事实上三个文件就在同一个目录下:

在cJSON.h中有相关函数的声明,比如:

 

2、问题分析

仔细查看编译时的执行命令(图一顶部),如下图:

     从图中的命令可以发现,编译的时候只包含了目录下的 test.c 文件,并没有包含cJSON.c文件。当我们用命令行编译多个源文件时,应该这样编译  gcc  file1.c  file2.c -o output,这个命令要指定参与编译的源文件,头文件地址,输出及相关参数。说明编译时参数设置是有问题的

3、解决方法

     问题是在哪里设置这些需要编译的文件,及参数呢?主要就是在4个jason文件中的下面两个文件中设置,需要注意的地方增加了注释。

    1)在tasks.jason 中设置源文件及参数 { // 有关 tasks.json 格式的文档,请参见 // https://go.microsoft.com/fwlink/?LinkId=733558 "version": "2.0.0", "tasks": [ { "type": "shell", "label": "Compile", "command": "D:\\mingw64\\bin\\gcc.exe", "args": [ "-g", "${workspaceFolder}\\cJSON.c","${workspaceFolder}\\test.c", //此处设置编译需要的源文件,有多个,要分别设置 "-I", "--std=c11", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe", ], "group": { "kind": "build", "isDefault": true }, "presentation": { "echo": true, "reveal": "always", "focus": false, "panel": "shared", "showReuseMessage": true, "clear": false }, // "options": { // "cwd": "D:\\mingw64\\bin" // }, "problemMatcher": [ "$gcc" ], //"group": "build" } ] } 2) 在c_cpp_properties.json 中设置头文件位置 { "configurations": [ { "name": "Win32", "includePath": [ "D:/kkjson/*", //此处是需要的头文件目录位置,有多处则设置多条 "${workspaceFolder}/**" ], "defines": ["_DEBUG", "UNICODE", "_UNICODE"], "compilerPath": "D:\\mingw64\\bin\\gcc.exe", "cStandard": "c11", "cppStandard": "c++17", "intelliSenseMode": "msvc-x86" } ], "version": 4 }

其它两个json文件正常设置即可,与此问题关系不大。

4、验证

     设置上述两个jason文件,保存后。

1) 再次点击又上角的三角,发现故障依旧,编译命令行的参数并未变化(如上图1,图2)

2)采用 Shift+Ctrl+B 编译,出现如下图(下图中的main.c 是将test.c 改了文件名,无其它变化)。从这里命令行可以看出需要的cJSON.c文件已经参与编译了。并且编译成功。

3,然后F5运行,可得到正确结果。

从1)与 2)3)对比看,右上角的三角Run Coder并未正确读取到配置文件的配置。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有